﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AjedrezWebV2.Models;

namespace AjedrezWebV2.Content.Repository
{
    public class JugadorRepository
    {
        AjedrezContext db;

        public JugadorRepository()
        {
            db = new AjedrezContext();
        }

        public void Create(Jugador jugador)
        {
            db.Jugadores.Add(jugador);
            db.SaveChanges();
        }

        public Jugador Get(int id)
        {
            return db.Jugadores.Find(id);
        }

        public void Save()
        {
            db.SaveChanges();
        }

        public void Delete(Jugador jugador)
        {
            db.Jugadores.Remove(jugador);
            db.SaveChanges();
        }

        public List<Jugador> GetAll()
        {
            return db.Jugadores.ToList();
        }

        public List<Jugador> GetByRank()
        {
            List<Jugador> jugadoresRank = db.Jugadores.ToList();
            jugadoresRank.Sort(CompareByPartidas);
            return db.Jugadores.ToList().GetRange(0, 5);
        }

        public int GetRank(Guid id)
        {
            int rank = 0;
            List<Jugador> jugadoresRank = db.Jugadores.ToList();
            jugadoresRank.Sort(CompareByPartidas);
            int cant = 0;
            foreach (Jugador j in jugadoresRank)
            {
                if (j.Id == id)
                {
                    rank = cant;
                }
                cant++;
            }
            return rank;
        }

        public static int CompareByPartidas(Jugador j1, Jugador j2)
        {
            int cantJug1 = j1.ContarGanadas() - j1.ContarPerdidas();
            int cantJug2 = j2.ContarGanadas() - j2.ContarPerdidas();

            if (cantJug1 > cantJug2)
                return 1;
            else if (cantJug1 < cantJug2)
                return -1;
            else
                return 0;
        }
    }
}